#include <stdio.h>

typedef unsigned char *byte_pointer;
// 这个要先声明函数 声明了以后才能使用
void test_show_bytes(int var);

int main()
{
    printf("hello world    \n");
    printf("int 的位数 %lu ",sizeof(int));
    printf("\n");
    float a=0.1;
    float b= 0.2;
    float c= a+b;
    printf("c的值为：%20.15f\n",c);
    if (c == 0.3)
    {
        printf("c的值等于 0.3");
    }
    
    printf("hello world    ");
    printf(" 哈哈 ",sizeof(int));
    printf(" int 存储位数：%lu ",sizeof(int));

    test_show_bytes(12345);
    return 0;
}

void show_bytes(byte_pointer start, size_t len)
{
    size_t i;
    for (i = 0; i < len; i++)
    {
        /* code */
        printf("%.2x", start[i]);
    }
    printf("\n");
}

void show_int(int x)
{
    printf("show int: ");
    show_bytes((byte_pointer)&x, sizeof(int));
}

void show_float(float x)
{
     printf("show_float: ");
    show_bytes((byte_pointer)&x, sizeof(float));
}

void show_pointer(void *x)
{
    printf("show_pointer: ");
    show_bytes((byte_pointer)&x, sizeof(void *));
}

void test_show_bytes(int val){
    int ival = val;
    float fval = (float) ival;
    int *pval = &ival;
    show_int(ival);
    show_float(fval);
    show_pointer(pval); 
}